//---------------------------------------------------------------------------- Strict
'use strict'
//---------------------------------------------------------------------------- Package
const _ = require('lodash')
const fs = require('fs')
const path = require('path')
//---------------------------------------------------------------------------- Exports
/**
 * 遍历目录获取所有文件数组
 * 注意，此函数需要递归，所以不能直接使用exports导出，而是单独导出
 */
var getFiles = function (dir, result) {

  // 初始化结果
  result = result || []

  // 读取目录，并进入循环
  let files = fs.readdirSync(dir)
  for (let file of files) {

    // 取目录或文件全路径，取出目录或文件状态
    let fullpath = dir + path.sep + file
    let stat = fs.lstatSync(fullpath)

    // 判断是否为
    if (stat.isDirectory()) {
      _.merge(result, getFiles(fullpath))
    } else {
      // 将index.js文件排除掉
      if (fullpath != dir + path.sep + 'index.js') {
        result.push(fullpath)
      }
    }  
  }

  // 返回
  return result
}

// 导出getFiles
exports.getFiles = getFiles